Перейти к основному содержимому

5.03. Spring

Разработчику Архитектору

Spring

Spring Framework – самый популярный фреймворк для создания масштабируемых, тестируемых и поддерживаемых Java-приложений. Он состоит из множества модулей, которые можно использовать отдельно или вместе.

Spring Core / IoC Container управляет жизненным циклом объектов, реализует принципы IoC (Inversion of Control) и DI (Dependency Injection).

Пример:

@Service
public class OrderService {
@Autowired
private PaymentService paymentService;
}

Используется при создании любого Spring-приложения для управления зависимости между компонентами.

Inversion of Control (IoC) – паттерн проектирования, который определяет, что объекты должны зависеть от абстракций, а не конкретных реализаций, и что объекты должны быть созданы и настроены вне зависимых классов.

Dependency Injection (DI) – процесс, при котором IoC применяется для внедрения зависимостей в объекты.

Spring Security предназначен для аутентификации и авторизации пользователей, с обеспечением защиты REST API, форм, WebSocket. Имеется поддержка OAuth2, JWT, LDAP, SAML, ролевого доступа (ROLE_ADMIN, ROLE_USER), CSRF защиты. Используется при необходимости ограничить доступ к ресурсам и для защиты веб-приложений и микросервисов.

Spring Data упрощает работу с базами данных, предоставляя готовые интерфейсы Repository для CRUD операций. Пример:

public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByEmail(String email);
}

Поддерживает SQL и NoSQL. Используется при работе с БД и для автоматической генерации запросов.

Spring MVC предназначн для создания веб-приложений по паттерну MVC (Model-View-Controller).

Пример:

@Controller
public class HelloController {
@GetMapping("/hello")
public String sayHello(Model model) {
model.addAttribute("message", "Привет!");
return "hello";
}
}

Используется для создания традиционных веб-приложений (с HTML), и как основа для REST API (вместе с @RestController).

Spring Integration – для интеграции разных систем и протоколов, с поддержкой Enterprise Integration Patterns (EIP), HTTP, FTP, JMS, AMQP, Email, файловых систем и прочего. Используется при построении ESB (Enterprice Service Bus), для обмена данными между сервисами.

Spring Boot – для автоматической настройки Spring-приложений, минимизации кода, и встроенной поддержки серверов (Tomcat, Jetty).

Пример:

@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}

Используется для быстрого старта проекта, создания standalone (самостоятельных) приложений и в микросервисной архитектуре.

+
Аннотации в Spring